package tablut;

public class PionSoldat extends Pion implements Cloneable {
	PionSoldat(int couleur, int haut, int droite, int bas, int gauche, Case cas, Plateau plat) {
		super(couleur, haut, droite, bas, gauche, cas, plat);
	}
	
	
	
	// La méthode vérifie si le pion peut être mangé, le pauvre ...
	@Override
	public boolean estEncercle(int dejaVerif) {
		Case tmpCase;
		
		switch(dejaVerif) {
		case HAUT:	// Si la case du dessus est déjà vérifiée (si c'est un pion ennemi).
			tmpCase = plat.plateau[cas.x][cas.y+1];
			
			if(tmpCase.type == Case.TRONE)
				return true;
			if(tmpCase.p != null && tmpCase.p.couleur == getCoulEnnemi())
				return true;
			return false;
		case DROITE:	// Si la case de droite est déjà vérifiée
			tmpCase = plat.plateau[cas.x-1][cas.y];
			
			if(tmpCase.type == Case.TRONE)
				return true;
			if(tmpCase.p != null && tmpCase.p.couleur == getCoulEnnemi())
				return true;
			return false;
		case BAS:	// Si la case du dessous est déjà vérifiée
			tmpCase = plat.plateau[cas.x][cas.y-1];
			
			if(tmpCase.type == Case.TRONE)
				return true;
			if(tmpCase.p != null && tmpCase.p.couleur == getCoulEnnemi())
				return true;
			return false;
		case GAUCHE:	// Si la case de gauche est déjà vérifiée
			tmpCase = plat.plateau[cas.x+1][cas.y];
			
			if(tmpCase.type == Case.TRONE)
				return true;
			if(tmpCase.p != null && tmpCase.p.couleur == getCoulEnnemi())
				return true;
			return false;
		default:
			return false;
		}
	}
	
	// Méthode redéfinie pour cloner un pion
	@Override
	public PionSoldat clone() {
		return new PionSoldat(couleur, distMax[0], distMax[1], distMax[2], distMax[3], cas, plat);
	}

	@Override
	public void reprendreEtat(Pion pion) {
		distMax[0] = pion.distMax[0];
		distMax[1] = pion.distMax[1];
		distMax[2] = pion.distMax[2];
		distMax[3] = pion.distMax[3];
		cas = pion.cas;
		estSurPlateau = pion.estSurPlateau;
	}
}
